<template>
  <mescroll-uni
    ref="mescrollRef"
    :down="downOption"
    :height="height"
    :up="upOption"
    top="64"
    @down="downCallback"
    @emptyclick="emptyClick"
    @init="mescrollInit"
    @up="upCallback"
  >
    <good-list :list="goods" :option="option" :titleName="tabs[i].name"></good-list>
  </mescroll-uni>
</template>

<script>
import { mapGetters, mapMutations } from 'vuex'
import MescrollMixin from '@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js'
import MescrollMoreItemMixin from '@/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more-item.js'

export default {
  mixins: [MescrollMixin, MescrollMoreItemMixin],
  computed: { ...mapGetters(['userInfo', 'api']) },
  data() {
    return {
      downOption: {
        auto: false // 不自动加载 (mixin已处理第一个tab触发downCallback)
      },
      upOption: {
        auto: false, // 不自动加载
        noMoreSize: 4, //如果列	表已无数据,可设置列表的总数量要大于半页才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看; 默认5
        empty: {
          tip: `~ ${this.$t('暂无记录')} ~`,
          fixed: true,
          top: '200rpx'
        },
        textNoMore: `-- ${this.$t('触底了')} --`
      },
      goods: [] //列表数据
    }
  },
  props: {
    i: Number, // 每个tab页的专属下标 (除了支付宝小程序必须在这里定义, 其他平台都可不用写, 因为已在MescrollMoreItemMixin定义)
    index: {
      // 当前tab的下标 (除了支付宝小程序必须在这里定义, 其他平台都可不用写, 因为已在MescrollMoreItemMixin定义)
      type: Number,
      default() {
        return 0
      }
    },
    tabs: {
      type: Array,
      default() {
        return []
      }
    },
    height: [Number, String], // mescroll的高度
    option: {
      //当前页面信息，从哪里点进的
      type: Object,
      default() {
        return {}
      }
    }
  },
  mounted() {
    //刷新
    uni.$on('applicationDetailsToApplicationList', () => {
      this.mescroll.triggerDownScroll()
    })
  },
  methods: {
    /*下拉刷新的回调 */
    downCallback() {
      this.goods = []
      // 这里加载你想下拉刷新的数据, 比如刷新轮播数据
      // loadSwiper();
      // 下拉刷新的回调,默认重置上拉加载列表为第一页 (自动执行 page.num=1, 再触发upCallback方法 )
      this.mescroll.resetUpScroll()
    },
    /*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
    upCallback(page) {
      //联网加载数据
      let type = this.tabs[this.i].name
      if (this.option.name === '审批处理') {
        this.randomfn(page, type)
      } else if (this.option.name === '授权处理') {
        this.authoriza(page, type)
      } else if (this.option.name === '审计处理') {
        this.audit(page, type)
      } else if (this.option.name === '我的申请') {
        this.getByOwnerApplications(page, type)
      }
    },
    //我的申请
    getByOwnerApplications(page, type) {
      let req = {
        deviceId: this.option.deviceId || '',
        pageSize: page.size, //每页的数量
        pageNum: page.num, // 当前显示第几页
        type: type === '待完结' ? 0 : 1,
        page: true
      }
      // 之前章的接口post请求 GLOBAL_application_getByOwnerApplications
      this.$u
        .post(this.api.GLOBAL_application_getByOwnerApplications, req, {
          'content-type': 'application/json;charset=UTF-8'
        })
        .then((res) => {
          if (page.num === 1) {
            this.goods = []
          }
          if (res.code === 200 && res.data && res.data.list) {
            this.mescroll.endBySize(res.data.list.length, res.data.total)
            this.goods = this.goods.concat(res.data.list)
          } else {
            this.mescroll.endBySize(0, 0)
            this.goods = []
          }
        })
        .catch((err) => {
          //联网失败, 结束加载
          this.mescroll.endErr()
        })

      // //电子印章get请求 GLOBAL_app_application_findApplicationList
      // this.$u.get(this.api.GLOBAL_app_application_findApplicationList, req).then(res => {
      // 	if(page.num===1){
      // 		this.goods = [];
      // 	}
      // 	if(res.code===200&&res.data&&res.data.list){
      // 		this.mescroll.endBySize(res.data.list.length,res.data.total);
      // 		this.goods=this.goods.concat(res.data.list)
      // 	}else{
      // 		this.mescroll.endBySize(0,0);
      // 		this.goods=[]
      // 	}
      // }).catch((err)=>{
      // 	//联网失败, 结束加载
      // 	this.mescroll.endErr();
      // })
    },
    //审批
    randomfn(page, type) {
      let req = {
        pageSize: page.size, //每页的数量
        pageNum: page.num, // 当前显示第几页
        page: true
      }
      let url = ''
      switch (type) {
        case '待审批':
          url = this.api.GLOBAL_application_getNotApprovedByOwn
          break
        case '已审批':
          url = this.api.GLOBAL_application_getApprovedByOwn
          break
        case '抄送我':
          url = this.api.GLOBAL_application_getCCByOwn
          break
      }
      //章的接口
      this.$u
        .post(url, req)
        .then((res) => {
          if (page.num === 1) {
            this.goods = []
          }

          if (res.code === 200 && res.data && res.data.list) {
            this.mescroll.endBySize(res.data.list.length, res.data.total)
            this.goods = this.goods.concat(res.data.list)
          } else {
            this.mescroll.endBySize(0, 0)
            this.goods = []
          }
        })
        .catch((err) => {
          //联网失败, 结束加载
          this.mescroll.endErr()
        })
    },
    //授权
    authoriza(page, type) {
      let req = {
        pageSize: page.size, //每页的数量
        pageNum: page.num, // 当前显示第几页
        page: true
      }
      let url =
        type === '待授权'
          ? this.api.GLOBAL_application_getUnAuthorizedByOwn
          : this.api.GLOBAL_application_getAuthorizedByOwn
      //章的接口
      this.$u
        .get(url, req)
        .then((res) => {
          if (res.code === 200 && res.data && res.data.list) {
            this.mescroll.endBySize(res.data.list.length, res.data.total)
            this.goods = this.goods.concat(res.data.list)
          } else {
            this.mescroll.endBySize(0, 0)
            this.goods = []
          }
        })
        .catch((err) => {
          //联网失败, 结束加载
          this.mescroll.endErr()
        })
    },
    //审计
    audit(page, type) {
      let req = {
        pageSize: page.size, //每页的数量
        pageNum: page.num, // 当前显示第几页
        page: true
      }
      let url =
        type === '待审计'
          ? this.api.GLOBAL_application_getNotAuditedByOwn
          : this.api.GLOBAL_application_getAuditedByOwn
      //章的接口
      this.$u
        .get(url, req)
        .then((res) => {
          if (res.code === 200 && res.data && res.data.list) {
            this.mescroll.endBySize(res.data.list.length, res.data.total)
            this.goods = this.goods.concat(res.data.list)
          } else {
            this.mescroll.endBySize(0, 0)
            this.goods = []
          }
        })
        .catch((err) => {
          //联网失败, 结束加载
          this.mescroll.endErr()
        })
    },

    //点击空布局按钮的回调
    emptyClick() {
      uni.showToast({
        title: 'click',
        icon: 'none'
      })
    }
  }
}
</script>
